在开发中 git 是最常用的版本控制软件,在学习极客时间苏玲的《玩转 git 三剑客》前,对 git 的使用只停留在addcommitpullpush上,稍微复杂点的checkout就不会使用了。在一次项目中,用到了merge,让我对git充满了好奇,正好这时极客时间推出了 git 的课程, 我毫不犹豫的购买了。

虽然 git 已经烂大街了,再写关于 git 的文章也没什么价值了,但我还是要自己写点文章,一方面记录自己学习的心得,另一封面,也锻炼下自己的写作能力,吴军老师说过:要想让一个人会说,逻辑清晰,首先得会写。很多人肚子里有东西,但是说不出来,表达的别人看不懂,听者看来,和没有没太大区别。所以这也是锻炼自己的方式。

什么是版本控制

版本控制能够追踪工程蓝图从诞生一直到定案的过程,确保由不同人员所编辑的程序文件都能得到同步。

最简单的版本控制是 copy 多份项目,并进行适当的编号,这种方法高度依赖开发者的自我纪律,很容易导致错误。
因此自动化的版本控制系统应运而生。

大部分版本控制软件都采用差分编码,只保留文件相继版本之间的差异,减少存储空间。

中央式系统和分布式系统

一个项目中有好几给开发人员同时参与,如果两个人同时改变一个文件,而没有管理访问权限,就会造成代码冲突。
所以有两种方法:1、中央式系统,由中央管理访问权限;2、分布式系统,可以同时容许多个单位同时进行。

版本控制系统演变历史

在版本控制系统出来之前是怎么开发的呢?

  1. 在服务器上面将文件共享出来,各自建个文件夹,以目录拷贝的方式来区分不同的人开发的东西;
  2. 自己开发的东西也通过这种文件夹的形式标出1.0、2.0、3.0;
  3. 这种方法大家开发的公共文件是很容易被覆盖的,
  4. 还有我在开发的时候,我得不停的跟人家说,我在开发这个,你们先别动,

所以沟通成本非常高,项目集成效率低下。

以目录形式区别不同版本的形式不仅仅是过去,现在还存在,当然时代在发展,在这几十年当中有很多版本控制系统走入了我们世界,其中像 cvs 和 vsn 这种集中式的控制系统,他曾经被很多团队和公司所接受。

集中式的版本控制系统,它有什么样的特征呢?

  1. 有集中的版本管理服务器,这个服务器存放了每个文件或者文件夹的演变历史。也就是,哪天你本地没有这个项目,你去服务器取也是非常容易的。提供了历史版本的搜索能力,以及不同版本之间比较的能力。
  2. 具备文件版本管理和分支管理能力。可以让不同的分支做集成,

优点:这些特征使得集中式的版本控制系统,比起之前没有版本控制的项目,它的效率在集成方面是有明显的提高的。
缺点:客户端必须时刻和服务器相连,因为客户端不具备服务器端一样的目录结构。

有很多人认为,集中式的版本控制系统在速度上和性能上是不足的。后来基于集中式的版本控制系统的不足,开发了分布式的版本控制系统。

它们最大的区别是,服务端和客户端都有完整的版本库,脱离服务端,客户端照样可以管理版本,查看历史和版本比较等多数操作,都不需要访问服务器,比集中式的VCS更能提高版本管理的效率。

git 特点

  1. 最优的存储能力
  2. 非凡的性能,得益于林纳斯是非常有喜的linux内核专家以及文件系统管理专家
  3. 开源的
  4. 很容易做备份,支持离线操作
  5. 很容易定制工作流程

一个学习 git 的网址

以上参考资料来自:维基百科 和 苏玲《玩转 git 三剑客》第一讲


uccs
756 声望88 粉丝

3年 gis 开发,wx:ttxbg210604